package shuaige.jdk.格式化;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class DecimalFormat使用指南 {
    /**
     * DecimalFormat是NumberFormat十进制数字格式的具体子类
     * DecimalFormat类中的特殊字符说明
     * 【0】代表阿拉伯数字，使用特殊字符“0”表示数字的一位阿拉伯数字，如果改为不存在数字，则显示0
     * 【#】代表阿拉伯数字，使用特殊字符“#”表示数字的一位阿拉伯数字，如果该位存在数字，则显示字符；否则不显示
     * 【.】小数分隔符或货币小数分隔符
     * 【-】负号
     * 【,】分组分隔符
     * 【E】分隔科学计数法中的位数和直属
     * 【%】本符号放置在数字的前缀或者后缀，将数字乘以100显示为百分数
     * 【\u2030】本符号放置在数字的前缀或者后缀，将数字乘以1000显示为千分数
     * 【\u00A4】本符号放置在数字的前缀或者后缀，记作货币符号
     * 【’】本符号为单引号，当上述特殊字符出现在数字中时，应为特殊符号添加单引号，系统将此符号是为普通符号进行处理
     */
    public static void 补0() {
        double pi = 3.1415927;
        //取一位整数 3
        System.out.println(new DecimalFormat("0").format(pi));
        //取一位整数和两位小数 3.14
        System.out.println(new DecimalFormat("0.00").format(pi));
        //取两位整数和三位小数，整数不足部分以0填补。03.142
        System.out.println(new DecimalFormat("00.000").format(pi));
    }

    public static void 取整() {
        System.out.println("取三位小数格式 整数部分按三位分隔，有四舍五入进一位：" + new DecimalFormat(",###.###").format(111123456.0016));
        System.out.println("取三位小数格式 整数部分按三位分隔，无四舍五入进一位：" + new DecimalFormat(",###.###").format(111123456.0014));
        System.out.println("取三位小数格式 整数部分按二位分隔：" + new DecimalFormat(",##.###").format(12345.7894));
        System.out.println("取二位小数格式（有进位)  整数部分按二位分隔：" + new DecimalFormat(",##.##").format(12345.7896));
        System.out.println("混用0和#：" + new DecimalFormat("00000000.###kg").format(123456.789));
    }

    public static void 添加百分比() {
        //以百分比方式计数，并取两位小数
        System.out.println(new DecimalFormat("#.##%").format(120));//314.16%
    }

    public static void 科学计数法() {
        long c = 299792458;//光速
        //显示为科学计数法，并取五位小数
        System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
        //显示为两位整数的科学计数法，并取四位小数
        System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
    }

    public static void 嵌入文本中() {
        long c = 299792458;//光速
        System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));
    }

    public static void main(String[] args) {


        System.out.println(new DecimalFormat("00").format(6));
    }

}
